赛纲介绍
本次题目的总体题目难度如下,各位选手可以借此评估一下自身的技术水平。
题目编号 题目名称 题目难度 T1 作业计划 入门 T2 扑克积分 入门 T3 配装选择 入门 T4 LP统计 入门 T5 晨会列队 普及- T6 翻转 普及-
T1 作业计划
题目大意
总共 505050 天的作业,完成每天的作业需要 xxx 小时。阿北计划 303030 天完成,需要算一算每天至少要用多少小时来写作业。
题解思路
本题本质为数学的计算,总共需要 50×x50\times x50×x 个小时,303030 天平均每天 50×x÷3050\times x\div{30}50×x÷30。
题目说明需要向上取整,可以使用 ceil() 向上取整函数,也可以使用 if 语句判断是否能够整除,不能整除要额外加 111 小时。
参考代码
T2 扑克积分
题目大意
1∼151\sim 151∼15 分别有对应的分数,总积分为四张牌的分数总和。如果四张牌是同数字会有额外的炸弹积分,如果四张牌中同时有代表大小王的 141414 和 151515 会有额外的王炸积分。
题解思路
本题可以先按照牌面积分进行统计,然后用 if 语句判断是否是炸弹的情况以及是否同时存在大小王,根据判断结果进行额外的积分计算。
炸弹情况需要判断四张牌是否都相同,王炸情况只需要判断最后两张牌的大小即可,因为题目中说明了输入的牌面数字按照从小到大顺序输入。
参考代码
T3 配装选择
题目大意
每件装备都会增加暴击率和暴击伤害加成,按照题目中给出的预期伤害计算公式计算选择每件装备时的预期总伤害,记录其中的伤害最大值。
题解思路
本题重点在于将装备属性加上基础属性后要将溢出的暴击率调整为暴击伤害加成,再按照题目描述中的公式进行计算。
参考代码
T4 LP统计
题目大意
给出一行用空格隔开的多个人名字符串,统计每个人名出现的次数。输入只有一行,没有具体签名的个数,最后读取到字符串 0 表示输入结束。
题解思路
一个一个字符串进行输入,直到输入到字符串 0 为止。每个字符串与前面记录过的人名作比较,如果出现过则 LPLPLP 增加 111,如果未找到则记录该人名。
本题中不同的人名数量和总人名数量较少,所以可以直接循环比较。如果人名较多,可以考虑使用键值对 map 进行人名比较与次数存储。
参考代码
T5 晨会列队
题目大意
给出一个 nnn 行 mmm 列的矩阵,对每一列进行从小到大的排列,000 需要放到每一列的最后几行中。
题解思路
使用排序代码进行排列,并特殊判断 000 的情况。这里冒泡排序的代码比较合适,判断到 000 时向后面的行进行交换。
参考代码
T6 翻转
题目大意
给出一个 010101 字符串, 必须将其中的一个 111 翻转为 000。求翻转后连续 000 个数的乘积。
题解思路
枚举所有 111 的位置,考虑翻转后对前后两个连续 000 串的影响。情况有:多一个单独 000,某个连续 000 长度增加 111,两个连续 000 串长度合并后再加 111。
这里数据范围较小,使用枚举方法。因为其他部分多次重复计算,所以可以预处理各个连续部分的长度和下标范围。
参考代码